import java.util.Scanner;

public class Day31 {
    // 求美国节日
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int year = in.nextInt();
            // 按照要求输出：
            // 1月1日：元旦
            System.out.printf("%d-01-01\n", year);
            // 1月的第三个星期一：马丁·路德·金纪念日
            int dayOfMonthOne = getWeekYDayZ(getWeekDay(year,1,1),3,1);
            System.out.printf("%d-01-%02d\n", year,dayOfMonthOne);
            // 2月的第三个星期一：总统节
            int dayOfMonthTwo = getWeekYDayZ(getWeekDay(year,2,1),3,1);
            System.out.printf("%d-02-%02d\n", year,dayOfMonthTwo);
            // 5月的最后一个星期一：阵亡将士纪念日
            int dayOfMonthFive = getLastFriDay(getWeekDay(year,6,1));
            System.out.printf("%d-05-%02d\n", year,dayOfMonthFive);
            // 7月4日：美国国庆
            System.out.printf("%d-07-04\n", year);
            // 9月的第一个星期一：劳动节
            int dayOfMonthNine = getWeekYDayZ(getWeekDay(year,9,1),1,1);
            System.out.printf("%d-09-%02d\n", year,dayOfMonthNine);
            // 11月的第四个星期四：感恩节
            int dayOfMonthEleven = getWeekYDayZ(getWeekDay(year,11,1),4,4);
            System.out.printf("%d-11-%02d\n", year,dayOfMonthEleven);
            // 12月25日：圣诞节
            System.out.printf("%d-12-25\n", year);
        }
    }

    /**
     * 根据 6 月 1 号是星期几，求 5 月的最后一个星期一是几号
     */
    private static int getLastFriDay(int x) {
        // 假设6月1号是星期        5月的最后一个星期一是
        //      1                 25=32-7
        //      2                 31=32-1
        //      3                 30=32-2
        //      4                 29=32-3
        //      5                 28=32-4
        //      6                 27=32-5
        //      7                 26=32-6
        //      w                    32-(w==1?7:w-1)
        return 32 - (x==1?7:x-1);
    }

    /**
     * 根据第 m 月的 1号是星期 x，求第 m 月的第 y 个星期 z 的日号
     */
    private static int getWeekYDayZ(int x,int y,int z) {
        // 假设 1月1日是星期      第三个星期一是
        //        1             15=1+2*7+0
        //        2             21=1+2*7+6
        //        3             20 =1+2*7+5
        //        4             19=1+2*7+4
        //        5             18=1+2*7+3
        //        6             17=1+2*7+2
        //        7             16=1+2*7+1
        //        w             1 + 2*7 + (7-w+1)%7
        return 1 + (y - 1) * 7 + (7 - x + z) % 7;
    }

    /**
     * 根据 y,m,d 求出当天是星期几
     */
    private static int getWeekDay(int year,int month,int day) {
        // 这里以公元前1年12月31日（0000-12-31）为基准（星期一）
        // 相差天数=一共有多少整年的天数 + 最后一年的天数
        // 可化简为：相差天数=（y-1）*365 + 中间经历多少闰年*1 + 最后一年的天数
        // 可化简为：相差天数=（y-1）*365 + （y-1）/4 - (y-1)/100 + (y-1)/400 + 最后一年的天数

        // 求出两个日期之间相差多少天
        int sub = (year - 1) * 365 + (year - 1) /4 - (year - 1)/100  + (year - 1)/400 + getDays(year,month,day);
        // 根据天数求出当天是星期几
        return sub % 7 == 0 ? 7 : sub % 7;
    }

    /**
     * 根据 y、m、n 求这一年过了多少天
     * @param year
     * @param month
     * @param day
     * @return
     */
    private static int getDays(int year ,int month, int day) {
        // 天数数组
        int[] days = {31,28,31,30,31,30,31,31,30,31,30,31};

        int res = day;
        for (int i = 0; i < month - 1; i ++) {
            res += days[i];
        }

        if (isLeapYear(year) && month > 2) {
            res ++;
        }

        return res;
    }

    /**
     * 判断是否是闰年
     * @return
     */
    private static boolean isLeapYear(int year) {
        return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
    }
}
